E) Proxy Pattern

Proxy Pattern
- 대리자를 통해 다른 객체에 대한 접근을 제어
- 자신이 상대하는 대상과 동일한 인터페이스 제공
- 원격지 프록시, 가상 프록시, 보호용 프록시, 스마트 참조자 등
#include <iostream>
using namespace std;
class Subject{
public:
virtual void request()=0;
};
class RealSubject: public Subject{
public:
void request(){ cout<<"RealSubjectRequest"<<endl; }
};
class Proxy: public Subject{
public:
Proxy(): _realsubject(nullptr) {}
~Proxy(){ if(_realsubject) delete _realsubject; }
void request(){
if(!_realsubject) _realsubject=new RealSubject;
_realsubject->request();
}
private:
RealSubject* _realsubject;
};
int main(void){
Proxy* Proxyptr=new Proxy();
Proxyptr->request();
delete Proxyptr;
return 0;
}

RealSubjectRequest